/**
 *
    算法描述：  显然是一个上下左右走迷宫的题目，因此通过定义dx和dy解决
    解决所需数据结构+算法：
**/
#include<iostream>
#include<cstring>
using namespace std;

int a[1010][1010]; // 0空地  1障碍   2轨迹

// 顺时针方向
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};

int main() {
    int T, n, m, k, x, y, d;
    int xx, yy, ans;
    cin >> T;
    while(T--) {
        // 每轮必要初始化
        memset(a, 0, sizeof(a));
        ans = 0;

        cin >> n >> m >> k >> x >> y >> d;
        a[x][y] = 2; // 起始点走一步

        for(int i=1; i<=n; i++)
            for(int j=1; j<=m; j++) {
                char ch;
                cin >> ch;
                if(ch == 'x')   a[i][j] = 1;
            }

        //开始走路
        while(k--) {
            xx = x + dx[d];
            yy = y + dy[d];
            if(xx>=1 && xx<=n && yy>=1 && yy<=m && a[xx][yy]!=1) {
                x = xx, y = yy;
                a[x][y] = 2; // 走下一步的轨迹
            } else {
                d = (d + 1) % 4;
            }
        }

        //数格子
        for(int i=1; i<=n; i++)
            for(int j=1; j<=m; j++)
                if(a[i][j] == 2)    ans++;

        // for(int i=1; i<=n; i++) {
        //     for(int j=1; j<=m; j++) {
        //         cout << a[i][j] << " ";
        //     }
        //     cout << endl;
        // }

        cout << ans << endl;
    }
    return 0;
}